package com.fowo.api.exportCenter.excel;


import cn.hutool.extra.spring.SpringUtil;
import org.springframework.beans.BeanUtils;

import java.lang.reflect.Constructor;

public class ExcelListenerFactory {
    /**
     * 实例化
     * @param listenerClass
     * @param serviceClass
     * @return
     */
    public static <T> T newInstance(Class<T> listenerClass, Class<?> serviceClass, Class<?>[] headClass){
        Constructor<?> constructor = listenerClass.getDeclaredConstructors()[0];

        // 获取bean
        Object bean = SpringUtil.getBean(serviceClass);

        return (T) BeanUtils.instantiateClass(constructor, bean, headClass);
    }



//    public static Class<?>[] getGenericType(Class clazz){
//        Type[] genericInterfaces = clazz.getGenericInterfaces();
//        for (Type genericInterface : genericInterfaces) {
//            if(genericInterface instanceof ParameterizedType){
//                if(((ParameterizedType)genericInterface).getRawType().equals(clazz.class)){
//                    Type[] actualTypeArguments = ((ParameterizedType) genericInterface).getActualTypeArguments();
//                    Class<?>[] clazzs = new Class<?>[actualTypeArguments.length];
//                    for(int i = 0 ; i < actualTypeArguments.length; i++){
//                        clazzs[i] = (Class<?>) actualTypeArguments[i];
//                    }
//
//                    return clazzs;
//                }
//            }
//        }
//
//        return null;
//    }
}
